package net.suncaper.mvc.service.impl;

import net.suncaper.mvc.mapper.PermissionMapper;
import net.suncaper.mvc.mapper.impl.PermissionMapperImpl;
import net.suncaper.mvc.model.domain.Permission;
import net.suncaper.mvc.service.IPermissionService;

import java.util.List;

/**
 * 权限服务实现类
 */
public class PermissionServiceImpl implements IPermissionService {

    private final PermissionMapper permissionMapper = new PermissionMapperImpl();

    /**
     * 创建权限
     *
     * @param permission 权限信息
     * @return 创建结果
     */
    @Override
    public boolean createPermission(Permission permission) {
        return permissionMapper.insertPermission(permission);
    }

    /**
     * 根据ID获取权限信息
     *
     * @param permissionId 权限ID
     * @return 权限信息
     */
    @Override
    public Permission getPermissionById(Integer permissionId) {
        return permissionMapper.selectPermissionById(permissionId);
    }

    /**
     * 根据名称获取权限信息
     *
     * @param permissionName 权限名称
     * @return 权限信息
     */
    @Override
    public Permission getPermissionByName(String permissionName) {
        return permissionMapper.selectPermissionByName(permissionName);
    }

    /**
     * 获取所有权限列表
     *
     * @return 权限列表
     */
    @Override
    public List<Permission> getAllPermissions() {
        return permissionMapper.selectAllPermissions();
    }

    /**
     * 更新权限信息
     *
     * @param permission 权限信息
     * @return 更新结果
     */
    @Override
    public boolean updatePermission(Permission permission) {
        return permissionMapper.updatePermission(permission);
    }

    /**
     * 删除权限
     *
     * @param permissionId 权限ID
     * @return 删除结果
     */
    @Override
    public boolean deletePermission(Integer permissionId) {
        return permissionMapper.deletePermission(permissionId);
    }

    /**
     * 获取角色的权限列表
     *
     * @param roleId 角色ID
     * @return 权限列表
     */
    @Override
    public List<Permission> getRolePermissions(Integer roleId) {
        return permissionMapper.selectPermissionsByRoleId(roleId);
    }

    /**
     * 获取用户的权限列表
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    @Override
    public List<Permission> getUserPermissions(String userId) {
        return permissionMapper.selectPermissionsByUserId(userId);
    }

    /**
     * 检查用户是否具有指定权限
     *
     * @param userId 用户ID
     * @param permissionName 权限名称
     * @return 用户是否具有指定权限
     */
    @Override
    public boolean hasPermission(String userId, String permissionName) {
        List<Permission> permissions = getUserPermissions(userId);
        if (permissions == null || permissions.isEmpty()) {
            return false;
        }
        
        for (Permission permission : permissions) {
            if (permissionName.equals(permission.getPermissionName())) {
                return true;
            }
        }
        
        return false;
    }
} 